<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>QuantumLibrary: /bb/mbigc/mbig5696/git/quantum_external/src/interface/quantum_icoro_context.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">QuantumLibrary
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('d5/db7/quantum__icoro__context_8h_source.html','../../');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">quantum_icoro_context.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">** Copyright 2018 Bloomberg Finance L.P.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">**</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">** Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">** you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">** You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">**</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">**     http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">**</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">** Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">** distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">** See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">** limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#ifndef BLOOMBERG_QUANTUM_ICORO_CONTEXT_H</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#define BLOOMBERG_QUANTUM_ICORO_CONTEXT_H</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;quantum/quantum_functions.h&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;quantum/interface/quantum_icoro_context_base.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;quantum/interface/quantum_icoro_future.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="keyword">namespace </span><a class="code" href="../../d6/db9/namespaceBloomberg.html">Bloomberg</a> {</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="keyword">namespace </span>quantum {</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> RET&gt;</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="../../d8/df7/classBloomberg_1_1quantum_1_1Context.html">   29</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../d8/df7/classBloomberg_1_1quantum_1_1Context.html">Context</a>;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">//==============================================================================================</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">//                                  interface ICoroContext</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">//==============================================================================================</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> RET&gt;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">   38</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">ICoroContext</a> : <span class="keyword">public</span> <a class="code" href="../../de/d67/structBloomberg_1_1quantum_1_1ICoroContextBase.html">ICoroContextBase</a></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;{</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a9c7bff480885fea5124d7cd781b383a1">   40</a></span>&#160;    <span class="keyword">using</span> <a class="code" href="../../dd/d45/structBloomberg_1_1quantum_1_1CoroContextTag.html">ContextTag</a> = <a class="code" href="../../dd/d45/structBloomberg_1_1quantum_1_1CoroContextTag.html">CoroContextTag</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afda4bb817480a24960e407f6e977ed28">   41</a></span>&#160;    <span class="keyword">using</span> <a class="code" href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">Ptr</a> = std::shared_ptr&lt;ICoroContext&lt;RET&gt;&gt;;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afc1bf405803ddb27caea4277c0726890">   42</a></span>&#160;    <span class="keyword">using</span> <a class="code" href="../../d8/df7/classBloomberg_1_1quantum_1_1Context.html">Impl</a> = <a class="code" href="../../d8/df7/classBloomberg_1_1quantum_1_1Context.html">Context&lt;RET&gt;</a>;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    </div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> V = RET&gt;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <a class="code" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a0a7dd2b5f475bbecb11bfa87fcc251c5">NonBufferRetType&lt;V&gt;</a> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a330754e60be65d5ee5f73793c7f86f69">get</a>(<a class="code" href="../../d3/d63/structBloomberg_1_1quantum_1_1ICoroSync.html#a109b2c4b7d70d53d48bb640a9d849b29">ICoroSync::Ptr</a> sync);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    </div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> V = RET&gt;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keyword">const</span> <a class="code" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a0a7dd2b5f475bbecb11bfa87fcc251c5">NonBufferRetType&lt;V&gt;</a>&amp; <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a43cf7ed9f70bc0123547b6baa6ec7c49">getRef</a>(<a class="code" href="../../d3/d63/structBloomberg_1_1quantum_1_1ICoroSync.html#a109b2c4b7d70d53d48bb640a9d849b29">ICoroSync::Ptr</a> sync) <span class="keyword">const</span>;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    </div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> OTHER_RET&gt;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <a class="code" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a0a7dd2b5f475bbecb11bfa87fcc251c5">NonBufferRetType&lt;OTHER_RET&gt;</a> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a141e79103170cb9cb0fb0197d8df61e5">getPrev</a>();</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    </div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> OTHER_RET&gt;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="keyword">const</span> <a class="code" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a0a7dd2b5f475bbecb11bfa87fcc251c5">NonBufferRetType&lt;OTHER_RET&gt;</a>&amp; <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a7aeb2b66b620b208cde57129a9293ec3">getPrevRef</a>();</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    </div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> OTHER_RET&gt;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <a class="code" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a0a7dd2b5f475bbecb11bfa87fcc251c5">NonBufferRetType&lt;OTHER_RET&gt;</a> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a87a132655875ac6f07d5242e24d80a8d">getAt</a>(<span class="keywordtype">int</span> num, <a class="code" href="../../d3/d63/structBloomberg_1_1quantum_1_1ICoroSync.html#a109b2c4b7d70d53d48bb640a9d849b29">ICoroSync::Ptr</a> sync);</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    </div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> OTHER_RET&gt;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keyword">const</span> <a class="code" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a0a7dd2b5f475bbecb11bfa87fcc251c5">NonBufferRetType&lt;OTHER_RET&gt;</a>&amp; <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a3c64853ee6c868f4e83668f17d4efd95">getRefAt</a>(<span class="keywordtype">int</span> num, <a class="code" href="../../d3/d63/structBloomberg_1_1quantum_1_1ICoroSync.html#a109b2c4b7d70d53d48bb640a9d849b29">ICoroSync::Ptr</a> sync) <span class="keyword">const</span>;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    </div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> V, <span class="keyword">class</span> = NonBufferType&lt;RET,V&gt;&gt;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordtype">int</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a984eea6da10575adfba1a38d3b09ebd7">set</a>(V&amp;&amp; value);</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    </div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> V, <span class="keyword">class</span> = BufferType&lt;RET,V&gt;&gt;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a18a76d5a8b8d68567bf706f468d69ea2">push</a>(V&amp;&amp; value);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    </div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> V = RET&gt;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <a class="code" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a3e3f89ff8206c0514976b423cb7199cd">BufferRetType&lt;V&gt;</a> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a218dc6b764b01a685e37840a796fe0eb">pull</a>(<a class="code" href="../../d3/d63/structBloomberg_1_1quantum_1_1ICoroSync.html#a109b2c4b7d70d53d48bb640a9d849b29">ICoroSync::Ptr</a> sync, <span class="keywordtype">bool</span>&amp; isBufferClosed);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    </div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> V = RET, <span class="keyword">class</span> = BufferRetType&lt;V&gt;&gt;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keywordtype">int</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a7f2c171bda51b08ef7bf56f0d4aa5a90">closeBuffer</a>();</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    </div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="keywordtype">int</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a0fadac955b2b32d87d1b8e505dce39c3">getNumCoroutineThreads</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    </div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <span class="keywordtype">int</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a1efdbf7df3818aec9bc8fd98a5bfc640">getNumIoThreads</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keyword">const</span> std::pair&lt;int, int&gt;&amp; <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a9c60ca5034b9d1b19dd7279f3476bbec">getCoroQueueIdRangeForAny</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    </div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="comment">//-----------------------------------------------------------------------------------------</span></div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="comment">//                                      TASK CONTINUATIONS</span></div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="comment">//-----------------------------------------------------------------------------------------</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="comment"></span>    <span class="comment">//-----------------------------------------------------------------------------------------</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    </div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>OTHER_RET = int, <span class="keyword">class </span>FUNC, <span class="keyword">class </span>... ARGS&gt;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afda4bb817480a24960e407f6e977ed28">ICoroContext&lt;OTHER_RET&gt;::Ptr</a></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a7e16a0f4dda08ea619bbd3997f31a51e">post</a>(FUNC&amp;&amp; func, ARGS&amp;&amp;... args);</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    </div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>OTHER_RET = int, <span class="keyword">class </span>FUNC, <span class="keyword">class </span>... ARGS&gt;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afda4bb817480a24960e407f6e977ed28">ICoroContext&lt;OTHER_RET&gt;::Ptr</a></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a7e16a0f4dda08ea619bbd3997f31a51e">post</a>(<span class="keywordtype">int</span> queueId, <span class="keywordtype">bool</span> isHighPriority, FUNC&amp;&amp; func, ARGS&amp;&amp;... args);</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    </div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>OTHER_RET = int, <span class="keyword">class </span>FUNC, <span class="keyword">class </span>... ARGS&gt;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afda4bb817480a24960e407f6e977ed28">ICoroContext&lt;OTHER_RET&gt;::Ptr</a></div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a4563ab7eb43249f2ad8677935b0b002c">postFirst</a>(FUNC&amp;&amp; func, ARGS&amp;&amp;... args);</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    </div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>OTHER_RET = int, <span class="keyword">class </span>FUNC, <span class="keyword">class </span>... ARGS&gt;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afda4bb817480a24960e407f6e977ed28">ICoroContext&lt;OTHER_RET&gt;::Ptr</a></div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a4563ab7eb43249f2ad8677935b0b002c">postFirst</a>(<span class="keywordtype">int</span> queueId, <span class="keywordtype">bool</span> isHighPriority, FUNC&amp;&amp; func, ARGS&amp;&amp;... args);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    </div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>OTHER_RET = int, <span class="keyword">class </span>FUNC, <span class="keyword">class </span>... ARGS&gt;</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afda4bb817480a24960e407f6e977ed28">ICoroContext&lt;OTHER_RET&gt;::Ptr</a></div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a122f96fbe956dcc2205564b1e953d8fc">then</a>(FUNC&amp;&amp; func, ARGS&amp;&amp;... args);</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    </div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>OTHER_RET = int, <span class="keyword">class </span>FUNC, <span class="keyword">class </span>... ARGS&gt;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afda4bb817480a24960e407f6e977ed28">ICoroContext&lt;OTHER_RET&gt;::Ptr</a></div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#abc0fd314e1dbc93055a0107c390b8af9">onError</a>(FUNC&amp;&amp; func, ARGS&amp;&amp;... args);</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    </div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>OTHER_RET = int, <span class="keyword">class </span>FUNC, <span class="keyword">class </span>... ARGS&gt;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afda4bb817480a24960e407f6e977ed28">ICoroContext&lt;OTHER_RET&gt;::Ptr</a></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <span class="keywordflow">finally</span>(FUNC&amp;&amp; func, ARGS&amp;&amp;... args);</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    </div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <a class="code" href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">Ptr</a> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#ab2530e5e0231aaba5a2f06315f713300">end</a>();</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    </div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>OTHER_RET = int, <span class="keyword">class </span>FUNC, <span class="keyword">class </span>... ARGS&gt;</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <a class="code" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a294434a555befbec5230f5ff03944878">CoroFuturePtr&lt;OTHER_RET&gt;</a></div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#aafa32c808db9c73262f5336b03f2055a">postAsyncIo</a>(FUNC&amp;&amp; func, ARGS&amp;&amp;... args);</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    </div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>OTHER_RET = int, <span class="keyword">class </span>FUNC, <span class="keyword">class </span>... ARGS&gt;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    <a class="code" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a294434a555befbec5230f5ff03944878">CoroFuturePtr&lt;OTHER_RET&gt;</a></div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#aafa32c808db9c73262f5336b03f2055a">postAsyncIo</a>(<span class="keywordtype">int</span> queueId, <span class="keywordtype">bool</span> isHighPriority, FUNC&amp;&amp; func, ARGS&amp;&amp;... args);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    </div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> OTHER_RET = <span class="keywordtype">int</span>, <span class="keyword">class</span> INPUT_IT, <span class="keyword">class</span> = Traits::IsInputIterator&lt;INPUT_IT&gt;&gt;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">ICoroContext&lt;std::vector&lt;OTHER_RET&gt;</a>&gt;<a class="code" href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">::Ptr</a></div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a1132ca05b44a667a1e3b1633e02a1b23">forEach</a>(INPUT_IT first, INPUT_IT last, <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#a510a24630512ab725361c0250bbf882e">Functions::ForEachFunc&lt;OTHER_RET, INPUT_IT&gt;</a> func);</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    </div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> OTHER_RET = <span class="keywordtype">int</span>, <span class="keyword">class</span> INPUT_IT&gt;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">ICoroContext&lt;std::vector&lt;OTHER_RET&gt;</a>&gt;<a class="code" href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">::Ptr</a></div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a1132ca05b44a667a1e3b1633e02a1b23">forEach</a>(INPUT_IT first, <span class="keywordtype">size_t</span> num, <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#a510a24630512ab725361c0250bbf882e">Functions::ForEachFunc&lt;OTHER_RET, INPUT_IT&gt;</a> func);</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    </div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> OTHER_RET = <span class="keywordtype">int</span>, <span class="keyword">class</span> INPUT_IT, <span class="keyword">class</span> = Traits::IsInputIterator&lt;INPUT_IT&gt;&gt;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">ICoroContext&lt;std::vector&lt;std::vector&lt;OTHER_RET&gt;</a>&gt;&gt;<a class="code" href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">::Ptr</a></div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#ab7f82d2d74ac1840dbe1332898a86796">forEachBatch</a>(INPUT_IT first, INPUT_IT last, <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#a510a24630512ab725361c0250bbf882e">Functions::ForEachFunc&lt;OTHER_RET, INPUT_IT&gt;</a> func);</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    </div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class</span> OTHER_RET = <span class="keywordtype">int</span>, <span class="keyword">class</span> INPUT_IT&gt;</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">ICoroContext&lt;std::vector&lt;std::vector&lt;OTHER_RET&gt;</a>&gt;&gt;<a class="code" href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">::Ptr</a></div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#ab7f82d2d74ac1840dbe1332898a86796">forEachBatch</a>(INPUT_IT first, <span class="keywordtype">size_t</span> num, <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#a510a24630512ab725361c0250bbf882e">Functions::ForEachFunc&lt;OTHER_RET, INPUT_IT&gt;</a> func);</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;    </div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>KEY,</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;              <span class="keyword">class </span>MAPPED_TYPE,</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;              <span class="keyword">class </span>REDUCED_TYPE,</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;              <span class="keyword">class </span>INPUT_IT,</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;              <span class="keyword">class </span>= <a class="code" href="../../d6/d86/structBloomberg_1_1quantum_1_1Traits.html#a426371df215f96d490ba45c21f651468">Traits::IsInputIterator&lt;INPUT_IT&gt;</a>&gt;</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">ICoroContext&lt;std::map&lt;KEY, REDUCED_TYPE&gt;</a>&gt;<a class="code" href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">::Ptr</a></div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a876d52748c66869620cdb9753783a86e">mapReduce</a>(INPUT_IT first,</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;              INPUT_IT last,</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;              <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#af8fdee23da6d53ce304c908981315528">Functions::MapFunc&lt;KEY, MAPPED_TYPE, INPUT_IT&gt;</a> mapper,</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;              <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#a4f8eb1de73c9ec3661fee4242f1a2a87">Functions::ReduceFunc&lt;KEY, MAPPED_TYPE, REDUCED_TYPE&gt;</a> reducer);</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  </div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>KEY,</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;              <span class="keyword">class </span>MAPPED_TYPE,</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;              <span class="keyword">class </span>REDUCED_TYPE,</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;              <span class="keyword">class </span>INPUT_IT&gt;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">ICoroContext&lt;std::map&lt;KEY, REDUCED_TYPE&gt;</a>&gt;<a class="code" href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">::Ptr</a></div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a876d52748c66869620cdb9753783a86e">mapReduce</a>(INPUT_IT first,</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;              <span class="keywordtype">size_t</span> num,</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;              <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#af8fdee23da6d53ce304c908981315528">Functions::MapFunc&lt;KEY, MAPPED_TYPE, INPUT_IT&gt;</a> mapper,</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;              <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#a4f8eb1de73c9ec3661fee4242f1a2a87">Functions::ReduceFunc&lt;KEY, MAPPED_TYPE, REDUCED_TYPE&gt;</a> reducer);</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    </div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>KEY,</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;              <span class="keyword">class </span>MAPPED_TYPE,</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;              <span class="keyword">class </span>REDUCED_TYPE,</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;              <span class="keyword">class </span>INPUT_IT,</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;              <span class="keyword">class </span>= <a class="code" href="../../d6/d86/structBloomberg_1_1quantum_1_1Traits.html#a426371df215f96d490ba45c21f651468">Traits::IsInputIterator&lt;INPUT_IT&gt;</a>&gt;</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">ICoroContext&lt;std::map&lt;KEY, REDUCED_TYPE&gt;</a>&gt;<a class="code" href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">::Ptr</a></div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afa8065d1270e5205c09720d1faf5307a">mapReduceBatch</a>(INPUT_IT first,</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;                   INPUT_IT last,</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;                   <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#af8fdee23da6d53ce304c908981315528">Functions::MapFunc&lt;KEY, MAPPED_TYPE, INPUT_IT&gt;</a> mapper,</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;                   <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#a4f8eb1de73c9ec3661fee4242f1a2a87">Functions::ReduceFunc&lt;KEY, MAPPED_TYPE, REDUCED_TYPE&gt;</a> reducer);</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    </div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">class </span>KEY,</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;              <span class="keyword">class </span>MAPPED_TYPE,</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;              <span class="keyword">class </span>REDUCED_TYPE,</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;              <span class="keyword">class </span>INPUT_IT&gt;</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">ICoroContext&lt;std::map&lt;KEY, REDUCED_TYPE&gt;</a>&gt;<a class="code" href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">::Ptr</a></div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;    <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afa8065d1270e5205c09720d1faf5307a">mapReduceBatch</a>(INPUT_IT first,</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;                   <span class="keywordtype">size_t</span> num,</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;                   <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#af8fdee23da6d53ce304c908981315528">Functions::MapFunc&lt;KEY, MAPPED_TYPE, INPUT_IT&gt;</a> mapper,</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;                   <a class="code" href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#a4f8eb1de73c9ec3661fee4242f1a2a87">Functions::ReduceFunc&lt;KEY, MAPPED_TYPE, REDUCED_TYPE&gt;</a> reducer);</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;};</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> RET&gt;</div><div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a15cc22a3e0070643a8cfefe6b83d3107">  476</a></span>&#160;<span class="keyword">using</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">CoroContext</a> = <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">ICoroContext&lt;RET&gt;</a>;</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> RET&gt;</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a8cf6f8fd7d169988428556468b333fe1">  479</a></span>&#160;<span class="keyword">using</span> <a class="code" href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a8cf6f8fd7d169988428556468b333fe1">CoroContextPtr</a> = <span class="keyword">typename</span> <a class="code" href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afda4bb817480a24960e407f6e977ed28">ICoroContext&lt;RET&gt;::Ptr</a>;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;}}</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;<span class="preprocessor">#endif //BLOOMBERG_QUANTUM_ICORO_CONTEXT_H</span></div><div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a1efdbf7df3818aec9bc8fd98a5bfc640"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a1efdbf7df3818aec9bc8fd98a5bfc640">Bloomberg::quantum::ICoroContext::getNumIoThreads</a></div><div class="ttdeci">int getNumIoThreads() const</div><div class="ttdoc">Returns the number of underlying IO threads as specified in the dispatcher constructor.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:218</div></div>
<div class="ttc" id="namespaceBloomberg_html"><div class="ttname"><a href="../../d6/db9/namespaceBloomberg.html">Bloomberg</a></div><div class="ttdef"><b>Definition:</b> quantum_buffer_impl.h:22</div></div>
<div class="ttc" id="namespaceBloomberg_1_1quantum_html_a294434a555befbec5230f5ff03944878"><div class="ttname"><a href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a294434a555befbec5230f5ff03944878">Bloomberg::quantum::CoroFuturePtr</a></div><div class="ttdeci">typename ICoroFuture&lt; T &gt;::Ptr CoroFuturePtr</div><div class="ttdef"><b>Definition:</b> quantum_icoro_future.h:72</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1IContextBase_html_ac92e5d294479f777fd01f5621e4f8db9"><div class="ttname"><a href="../../d8/db0/structBloomberg_1_1quantum_1_1IContextBase.html#ac92e5d294479f777fd01f5621e4f8db9">Bloomberg::quantum::IContextBase::Ptr</a></div><div class="ttdeci">std::shared_ptr&lt; IContextBase &gt; Ptr</div><div class="ttdef"><b>Definition:</b> quantum_icontext_base.h:35</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_ab2530e5e0231aaba5a2f06315f713300"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#ab2530e5e0231aaba5a2f06315f713300">Bloomberg::quantum::ICoroContext::end</a></div><div class="ttdeci">Ptr end()</div><div class="ttdoc">This is the last method in a continuation chain.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:287</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a43cf7ed9f70bc0123547b6baa6ec7c49"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a43cf7ed9f70bc0123547b6baa6ec7c49">Bloomberg::quantum::ICoroContext::getRef</a></div><div class="ttdeci">const NonBufferRetType&lt; V &gt; &amp; getRef(ICoroSync::Ptr sync) const</div><div class="ttdoc">Get a reference the future value associated with this context.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:146</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a4563ab7eb43249f2ad8677935b0b002c"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a4563ab7eb43249f2ad8677935b0b002c">Bloomberg::quantum::ICoroContext::postFirst</a></div><div class="ttdeci">ICoroContext&lt; OTHER_RET &gt;::Ptr postFirst(FUNC &amp;&amp;func, ARGS &amp;&amp;... args)</div><div class="ttdoc">Posts a coroutine to run asynchronously.</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html">Bloomberg::quantum::ICoroContext</a></div><div class="ttdoc">Exposes methods to manipulate the coroutine context.</div><div class="ttdef"><b>Definition:</b> quantum_icoro_context.h:38</div></div>
<div class="ttc" id="namespaceBloomberg_1_1quantum_html_a8cf6f8fd7d169988428556468b333fe1"><div class="ttname"><a href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a8cf6f8fd7d169988428556468b333fe1">Bloomberg::quantum::CoroContextPtr</a></div><div class="ttdeci">typename ICoroContext&lt; RET &gt;::Ptr CoroContextPtr</div><div class="ttdef"><b>Definition:</b> quantum_icoro_context.h:479</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_afa8065d1270e5205c09720d1faf5307a"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afa8065d1270e5205c09720d1faf5307a">Bloomberg::quantum::ICoroContext::mapReduceBatch</a></div><div class="ttdeci">ICoroContext&lt; std::map&lt; KEY, REDUCED_TYPE &gt; &gt;::Ptr mapReduceBatch(INPUT_IT first, INPUT_IT last, Functions::MapFunc&lt; KEY, MAPPED_TYPE, INPUT_IT &gt; mapper, Functions::ReduceFunc&lt; KEY, MAPPED_TYPE, REDUCED_TYPE &gt; reducer)</div><div class="ttdoc">This version of mapReduce() runs both the mapper and the reducer functions in batches for improved pe...</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a0fadac955b2b32d87d1b8e505dce39c3"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a0fadac955b2b32d87d1b8e505dce39c3">Bloomberg::quantum::ICoroContext::getNumCoroutineThreads</a></div><div class="ttdeci">int getNumCoroutineThreads() const</div><div class="ttdoc">Returns the number of underlying coroutine threads as specified in the dispatcher constructor....</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:212</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroSync_html_a109b2c4b7d70d53d48bb640a9d849b29"><div class="ttname"><a href="../../d3/d63/structBloomberg_1_1quantum_1_1ICoroSync.html#a109b2c4b7d70d53d48bb640a9d849b29">Bloomberg::quantum::ICoroSync::Ptr</a></div><div class="ttdeci">std::shared_ptr&lt; ICoroSync &gt; Ptr</div><div class="ttdef"><b>Definition:</b> quantum_icoro_sync.h:36</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1Functions_html_a510a24630512ab725361c0250bbf882e"><div class="ttname"><a href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#a510a24630512ab725361c0250bbf882e">Bloomberg::quantum::Functions::ForEachFunc</a></div><div class="ttdeci">std::function&lt; RET(const typename std::iterator_traits&lt; INPUT_IT &gt;::value_type &amp;)&gt; ForEachFunc</div><div class="ttdef"><b>Definition:</b> quantum_functions.h:34</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a9c60ca5034b9d1b19dd7279f3476bbec"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a9c60ca5034b9d1b19dd7279f3476bbec">Bloomberg::quantum::ICoroContext::getCoroQueueIdRangeForAny</a></div><div class="ttdeci">const std::pair&lt; int, int &gt; &amp; getCoroQueueIdRangeForAny() const</div><div class="ttdoc">Gets the range [minQueueId, maxQueueId] of coroutine queueIds covered by IQueue::QueueId::Any by the ...</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:224</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_aafa32c808db9c73262f5336b03f2055a"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#aafa32c808db9c73262f5336b03f2055a">Bloomberg::quantum::ICoroContext::postAsyncIo</a></div><div class="ttdeci">CoroFuturePtr&lt; OTHER_RET &gt; postAsyncIo(FUNC &amp;&amp;func, ARGS &amp;&amp;... args)</div><div class="ttdoc">Posts an IO method to run asynchronously on the IO thread pool.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:295</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1Functions_html_af8fdee23da6d53ce304c908981315528"><div class="ttname"><a href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#af8fdee23da6d53ce304c908981315528">Bloomberg::quantum::Functions::MapFunc</a></div><div class="ttdeci">std::function&lt; std::vector&lt; std::pair&lt; KEY, MAPPED_TYPE &gt; &gt;(const typename std::iterator_traits&lt; INPUT_IT &gt;::value_type &amp;)&gt; MapFunc</div><div class="ttdef"><b>Definition:</b> quantum_functions.h:37</div></div>
<div class="ttc" id="namespaceBloomberg_1_1quantum_html_a0a7dd2b5f475bbecb11bfa87fcc251c5"><div class="ttname"><a href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a0a7dd2b5f475bbecb11bfa87fcc251c5">Bloomberg::quantum::NonBufferRetType</a></div><div class="ttdeci">std::enable_if_t&lt;!Traits::IsBuffer&lt; T &gt;::value, typename Traits::IsBuffer&lt; T &gt;::Type &gt; NonBufferRetType</div><div class="ttdef"><b>Definition:</b> quantum_traits.h:95</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a87a132655875ac6f07d5242e24d80a8d"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a87a132655875ac6f07d5242e24d80a8d">Bloomberg::quantum::ICoroContext::getAt</a></div><div class="ttdeci">NonBufferRetType&lt; OTHER_RET &gt; getAt(int num, ICoroSync::Ptr sync)</div><div class="ttdoc">Get the future value from the 'num-th' continuation context.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:169</div></div>
<div class="ttc" id="classBloomberg_1_1quantum_1_1Context_html"><div class="ttname"><a href="../../d8/df7/classBloomberg_1_1quantum_1_1Context.html">Bloomberg::quantum::Context</a></div><div class="ttdoc">Concrete class representing a coroutine or a thread context.</div><div class="ttdef"><b>Definition:</b> quantum_icoro_context.h:29</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_abc0fd314e1dbc93055a0107c390b8af9"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#abc0fd314e1dbc93055a0107c390b8af9">Bloomberg::quantum::ICoroContext::onError</a></div><div class="ttdeci">ICoroContext&lt; OTHER_RET &gt;::Ptr onError(FUNC &amp;&amp;func, ARGS &amp;&amp;... args)</div><div class="ttdoc">Posts a coroutine to run asynchronously. This is the error handler for a continuation chain and acts ...</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a7f2c171bda51b08ef7bf56f0d4aa5a90"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a7f2c171bda51b08ef7bf56f0d4aa5a90">Bloomberg::quantum::ICoroContext::closeBuffer</a></div><div class="ttdeci">int closeBuffer()</div><div class="ttdoc">Close a promise buffer.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:206</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a876d52748c66869620cdb9753783a86e"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a876d52748c66869620cdb9753783a86e">Bloomberg::quantum::ICoroContext::mapReduce</a></div><div class="ttdeci">ICoroContext&lt; std::map&lt; KEY, REDUCED_TYPE &gt; &gt;::Ptr mapReduce(INPUT_IT first, INPUT_IT last, Functions::MapFunc&lt; KEY, MAPPED_TYPE, INPUT_IT &gt; mapper, Functions::ReduceFunc&lt; KEY, MAPPED_TYPE, REDUCED_TYPE &gt; reducer)</div><div class="ttdoc">Implementation of map-reduce functionality.</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a1132ca05b44a667a1e3b1633e02a1b23"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a1132ca05b44a667a1e3b1633e02a1b23">Bloomberg::quantum::ICoroContext::forEach</a></div><div class="ttdeci">ICoroContext&lt; std::vector&lt; OTHER_RET &gt; &gt;::Ptr forEach(INPUT_IT first, INPUT_IT last, Functions::ForEachFunc&lt; OTHER_RET, INPUT_IT &gt; func)</div><div class="ttdoc">Applies the given unary function to all the elements in the range [first,last). This function runs in...</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a330754e60be65d5ee5f73793c7f86f69"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a330754e60be65d5ee5f73793c7f86f69">Bloomberg::quantum::ICoroContext::get</a></div><div class="ttdeci">NonBufferRetType&lt; V &gt; get(ICoroSync::Ptr sync)</div><div class="ttdoc">Get the future value associated with this context.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:139</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a3c64853ee6c868f4e83668f17d4efd95"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a3c64853ee6c868f4e83668f17d4efd95">Bloomberg::quantum::ICoroContext::getRefAt</a></div><div class="ttdeci">const NonBufferRetType&lt; OTHER_RET &gt; &amp; getRefAt(int num, ICoroSync::Ptr sync) const</div><div class="ttdoc">Get a reference to the future value from the 'num-th' continuation context.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:176</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a7aeb2b66b620b208cde57129a9293ec3"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a7aeb2b66b620b208cde57129a9293ec3">Bloomberg::quantum::ICoroContext::getPrevRef</a></div><div class="ttdeci">const NonBufferRetType&lt; OTHER_RET &gt; &amp; getPrevRef()</div><div class="ttdoc">Get a reference to future value associated with the previous coroutine context in the continuation ch...</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:161</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1Functions_html_a4f8eb1de73c9ec3661fee4242f1a2a87"><div class="ttname"><a href="../../d0/d25/structBloomberg_1_1quantum_1_1Functions.html#a4f8eb1de73c9ec3661fee4242f1a2a87">Bloomberg::quantum::Functions::ReduceFunc</a></div><div class="ttdeci">std::function&lt; std::pair&lt; KEY, REDUCED_TYPE &gt;(std::pair&lt; KEY, std::vector&lt; MAPPED_TYPE &gt; &gt; &amp;&amp;)&gt; ReduceFunc</div><div class="ttdef"><b>Definition:</b> quantum_functions.h:40</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a984eea6da10575adfba1a38d3b09ebd7"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a984eea6da10575adfba1a38d3b09ebd7">Bloomberg::quantum::ICoroContext::set</a></div><div class="ttdeci">int set(V &amp;&amp;value)</div><div class="ttdoc">Set the promised value associated with this context.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:183</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_afda4bb817480a24960e407f6e977ed28"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#afda4bb817480a24960e407f6e977ed28">Bloomberg::quantum::ICoroContext::Ptr</a></div><div class="ttdeci">std::shared_ptr&lt; ICoroContext&lt; RET &gt; &gt; Ptr</div><div class="ttdef"><b>Definition:</b> quantum_icoro_context.h:41</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a18a76d5a8b8d68567bf706f468d69ea2"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a18a76d5a8b8d68567bf706f468d69ea2">Bloomberg::quantum::ICoroContext::push</a></div><div class="ttdeci">void push(V &amp;&amp;value)</div><div class="ttdoc">Push a single value into the promise buffer.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:191</div></div>
<div class="ttc" id="namespaceBloomberg_1_1quantum_html_a3e3f89ff8206c0514976b423cb7199cd"><div class="ttname"><a href="../../dc/d48/namespaceBloomberg_1_1quantum.html#a3e3f89ff8206c0514976b423cb7199cd">Bloomberg::quantum::BufferRetType</a></div><div class="ttdeci">std::enable_if_t&lt; Traits::IsBuffer&lt; T &gt;::value, typename Traits::IsBuffer&lt; T &gt;::Type &gt; BufferRetType</div><div class="ttdef"><b>Definition:</b> quantum_traits.h:93</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a141e79103170cb9cb0fb0197d8df61e5"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a141e79103170cb9cb0fb0197d8df61e5">Bloomberg::quantum::ICoroContext::getPrev</a></div><div class="ttdeci">NonBufferRetType&lt; OTHER_RET &gt; getPrev()</div><div class="ttdoc">Get the future value associated with the previous coroutine context in the continuation chain.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:153</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1Traits_html_a426371df215f96d490ba45c21f651468"><div class="ttname"><a href="../../d6/d86/structBloomberg_1_1quantum_1_1Traits.html#a426371df215f96d490ba45c21f651468">Bloomberg::quantum::Traits::IsInputIterator</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_convertible&lt; typename std::iterator_traits&lt; IT &gt;::iterator_category, std::input_iterator_tag &gt;::value &gt; IsInputIterator</div><div class="ttdef"><b>Definition:</b> quantum_traits.h:62</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a218dc6b764b01a685e37840a796fe0eb"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a218dc6b764b01a685e37840a796fe0eb">Bloomberg::quantum::ICoroContext::pull</a></div><div class="ttdeci">BufferRetType&lt; V &gt; pull(ICoroSync::Ptr sync, bool &amp;isBufferClosed)</div><div class="ttdoc">Pull a single value from the future buffer.</div><div class="ttdef"><b>Definition:</b> quantum_context_impl.h:199</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a7e16a0f4dda08ea619bbd3997f31a51e"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a7e16a0f4dda08ea619bbd3997f31a51e">Bloomberg::quantum::ICoroContext::post</a></div><div class="ttdeci">ICoroContext&lt; OTHER_RET &gt;::Ptr post(FUNC &amp;&amp;func, ARGS &amp;&amp;... args)</div><div class="ttdoc">Post a coroutine to run asynchronously.</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_ab7f82d2d74ac1840dbe1332898a86796"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#ab7f82d2d74ac1840dbe1332898a86796">Bloomberg::quantum::ICoroContext::forEachBatch</a></div><div class="ttdeci">ICoroContext&lt; std::vector&lt; std::vector&lt; OTHER_RET &gt; &gt; &gt;::Ptr forEachBatch(INPUT_IT first, INPUT_IT last, Functions::ForEachFunc&lt; OTHER_RET, INPUT_IT &gt; func)</div><div class="ttdoc">Applies the given unary function to all the elements in the range [first,last). This function runs se...</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1CoroContextTag_html"><div class="ttname"><a href="../../dd/d45/structBloomberg_1_1quantum_1_1CoroContextTag.html">Bloomberg::quantum::CoroContextTag</a></div><div class="ttdef"><b>Definition:</b> quantum_icontext_base.h:25</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContext_html_a122f96fbe956dcc2205564b1e953d8fc"><div class="ttname"><a href="../../d5/dd1/structBloomberg_1_1quantum_1_1ICoroContext.html#a122f96fbe956dcc2205564b1e953d8fc">Bloomberg::quantum::ICoroContext::then</a></div><div class="ttdeci">ICoroContext&lt; OTHER_RET &gt;::Ptr then(FUNC &amp;&amp;func, ARGS &amp;&amp;... args)</div><div class="ttdoc">Posts a coroutine to run asynchronously.</div></div>
<div class="ttc" id="structBloomberg_1_1quantum_1_1ICoroContextBase_html"><div class="ttname"><a href="../../de/d67/structBloomberg_1_1quantum_1_1ICoroContextBase.html">Bloomberg::quantum::ICoroContextBase</a></div><div class="ttdoc">Exposes methods to manipulate the coroutine context, especially future wait methods.</div><div class="ttdef"><b>Definition:</b> quantum_icoro_context_base.h:32</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="../../dir_650ee533936399e683a30afb9473a469.html">interface</a></li><li class="navelem"><b>quantum_icoro_context.h</b></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
  </ul>
</div>
</body>
</html>
